#ifndef __CDCL_H__
#define __CDCL_H__
#include"cdcl_dependence_graph.h"
#include"solver.h"
#include"dpll.h"
struct _cdcl_config;
typedef struct _cdcl{
    int rank;
    int round;
    struct _cdcl_config* config;
    cnf* _cnf;
    cnf* oricnf;
    DGliteral* parentdecision;
    DGraph* dependence_graph;
}cdcl;

typedef struct _cdcl_config{
    _bool var_iter;
    int restart_round;
}cdcl_config;
void cdcl_init(cdcl*);
_bool cdcl_satisfiable(cnf*_cnf);
_bool mpi_cdcl_satisfiable( cnf*_cnf, int rank);
dpllresult* CDCLalgorithm(cdcl* _cdcl);
void init_mpi_datatype();
#endif